package com.itheima.edu.day19File;

import java.io.File;
import java.util.HashMap;

public class FileTest {
    public static void main(String[] args) {
        //确定需要操作文件的位置，本次采用的是本项目下的"itheima-edu-info-manager"模块
        File file = new File("C:\\Users\\1\\Desktop\\java学习");
        //创建一个Map集合用于存放统计的数据
        HashMap<String , Integer> hm = new HashMap<>();
        //创建一个方法用于计算每种文件出现过的次数，传入一个集合和需要操作的file对象名
        getCount(hm,file);
        //输出打印
        System.out.println(hm);
    }

    private static void getCount(HashMap<String , Integer> hm,File file) {
        //进入文件夹，将每一个文件名给获取出来
        File[] fileArr = file.listFiles();
        //遍历File数组，对每一个file对象都进行判断
        for (File files : fileArr) {
            //如果现在操作的这个file是一个文件的话
            if(files.isFile()){
                //获取这个文件的文件名
                String filesName = files.getName();
                //对文件名进行切割，并把得到的两个元素存入新的String数组中去
                //[0]为file的文件名，[1]为file的后缀名
                String[] filesNameArr = filesName.split("\\.");
                //当数组长度为2时再进行操作
                if(filesNameArr.length == 2){
                    //得到这个file文件的后缀名
                    String fileEndName = filesNameArr[1];
                    //在集合中判断这个后缀名是否存在
                    if(hm.containsKey(fileEndName)){
                        //这个后缀名存在，获取已经出现的次数
                        Integer count = hm.get(fileEndName);
                        //在原有的次数上自增一次
                        count++;
                        //重新存入集合之中
                        hm.put(fileEndName,count);

                        //后缀名不存在
                    }else{
                        //元素第一次出现，直接添加
                        hm.put(fileEndName,1);
                    }
                }
            //如果此时操作做的file是一个文件夹时
            }else{
                //重新调用自己的方法
                getCount(hm,files);
            }
        }
    }
}
